def area(map_size, char_pos, move_num=3):
    width = map_size[0]
    height = map_size[1]
    pos = char_pos
    move_num = _move_num_1 = _move_num_2 = move_num
    path = []
    for x in range(1, move_num + 1):
        _pos = pos[0] - x, pos[1]
        if _pos[0] >= 0 and _pos[1] < width and _pos[1] >= 0 and _pos[1] < height:
            path.append(_pos)
        _move_num_1 -= 1
        for y in range(1, _move_num_1 + 1):
            __pos = _pos[0], _pos[1] - y
            if __pos[0] >= 0 and __pos[0] < width and __pos[1] >= 0 and __pos[1] < height:
                path.append(__pos)
        for y in range(1, _move_num_1 + 1):
            __pos = _pos[0], _pos[1] - -y
            if __pos[0] >= 0 and __pos[0] < width and __pos[1] >= 0 and __pos[1] < height:
                path.append(__pos)
    for x in range(1, move_num + 1):
        _pos = pos[0] - -x, pos[1]
        if _pos[0] >= 0 and _pos[1] < width and _pos[1] >= 0 and _pos[1] < height:
            path.append(_pos)
        _move_num_2 -= 1
        for y in range(1, _move_num_2 + 1):
            __pos = _pos[0], _pos[1] - y
            if __pos[0] >= 0 and __pos[0] < width and __pos[1] >= 0 and __pos[1] < height:
                path.append(__pos)
        for y in range(1, _move_num_2 + 1):
            __pos = _pos[0], _pos[1] - -y
            if __pos[0] >= 0 and __pos[0] < width and __pos[1] >= 0 and __pos[1] < height:
                path.append(__pos)

    for x in range(1, move_num + 1):
        _pos = pos[0], pos[1] - x
        if _pos[0] >= 0 and _pos[1] < width and _pos[1] >= 0 and _pos[1] < height:
            path.append(_pos)
    for x in range(1, move_num + 1):
        _pos = pos[0], pos[1] - -x
        if _pos[0] >= 0 and _pos[1] < width and _pos[1] >= 0 and _pos[1] < height:
            path.append(_pos)
    return list(set(path))
